package com.shopping.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shopping.entity.Order;

import java.util.List;

public interface OrderService extends IService<Order> {
    /**
     * 创建订单
     */
    boolean createOrder(Order order);

    /**
     * 获取用户的订单列表
     */
    List<Order> getUserOrders(Long userId);

    /**
     * 更新订单状态
     */
    boolean updateOrderStatus(Long orderId, Order.OrderStatus status);

    /**
     * 获取订单详情
     */
    Order getOrderDetail(Long orderId);

    /**
     * 分页获取订单列表
     */
    Page<Order> getOrderList(int page, int size, Long userId, Order.OrderStatus status);

    /**
     * 取消订单
     */
    boolean cancelOrder(Long orderId);

    /**
     * 管理员获取订单列表（支持筛选）
     */
    Page<Order> getOrderListForAdmin(Integer page, Integer size, String orderNumber, Long userId, Order.OrderStatus status);

    /**
     * 更新订单地址
     */
    boolean updateOrderAddress(Long orderId, String address);

    /**
     * 发货
     */
    boolean shipOrder(Long orderId, Order.ShippingMethod shippingMethod);

    /**
     * 获取最新订单
     */
    List<Order> getLatestOrders(Integer limit);

    /**
     * 获取订单统计信息
     */
    Object getOrderStatistics();
}